<?php
namespace IMooc;

class Obj{
    // __get  __set
    //  当调用不存在的对象的时候，会自动调用 __get  和 __set
    protected $array = array();

    // 把对象当函数使用，自动执行__invoke
    // $obj = new Obj();  echo $obj("111");
    public function __invoke($param)
    {
        return "invoke";
        // TODO: Implement __invoke() method.
    }

    // echo  对象， 自动转为字符串.
    public function __toString()
    {
        return __CLASS__;
        // TODO: Implement __toString() method.
    }

    // 调用一个不存在的静态方法的时候.
    public static function __callStatic($name, $arguments)
    {
        // TODO: Implement __callStatic() method.
    }

    //  调用一个不存在的方法的时候 自动执行 __call
    public function __call($name, $arguments)
    {
        return "test";
        // TODO: Implement __call() method.
    }

    public function __set($name, $value)
    {
        $this->array[$name] = $value;
        // TODO: Implement __set() method.
    }

    public function __get($name)
    {
        return $this->array[$name];
    }
}
